package org.example.controller;


import lombok.extern.slf4j.Slf4j;
import org.example.model.Test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.annotation.RequestScope;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.annotation.MultipartConfig;

@Slf4j//这是日志框架
@Controller  //第一步：加注解，表示注册到容器中作为(bean对象)，注册为控制器
public class TestController {

    //然后定义一个方法来处理我们的http请求和响应
    //之前是根据请求的路径和方法来匹配我们里面的某一个类，所以这里还要加一个
    // @RequestMapping("/t1")  就是定义服务资源的注解，可以配置我们的服务路径和服务方法
    @RequestMapping("/t1")
    public Object t1(Integer a,String b){
        //然后这里使用日志框架进行打印
        log.debug("a={},b={}",a,b);
        return "/test.html";
    }

    @RequestMapping("/t1_1")
    //使用@RequestParam默认必传
    public Object t1_1(@RequestParam Integer a, String b){
        //然后这里使用日志框架进行打印
        log.debug("a={},b={}",a,b);
        return "/test.html";
    }
    public Object t1_2(@RequestParam(required = false) Integer a, String b){
        //然后这里使用日志框架进行打印
        log.debug("a={},b={}",a,b);
        return "/test.html";
    }

    @RequestMapping("/t2")
    public Object t2(Test test){
        log.debug(test.toString());
        return "/test.html";
    }


    @RequestMapping("/t3")
    @ResponseBody
    //这里将请求json格式的的数据转化为java对象
    public Object t3(@RequestBody Test test){
        log.debug(test.toString());
        return null;
    }

    @RequestMapping("/t4")
    @ResponseBody
    public Object t4(Test test, MultipartFile c){
        //保存文件在本地
        /*
        1.c.getByte() 返回byte[]
        2.c.getInputStream 返回输入流，自行读取获取数据
        3.c.tranferTo(new File(...))保存

         */
        log.debug("filename = {}",c.getOriginalFilename());
        log.debug("test = {},file = {}",test.toString(),c);
        return null;
    }

    @RequestMapping("/t4_1")
    @ResponseBody
    public Object t4_1(Test test, @RequestParam MultipartFile c){
        log.debug("test = {},file = {}",test.toString(),c);
        return null;
    }

    @RequestMapping("/t4_2")
    @ResponseBody
    public Object t4_2(Test test,@RequestPart MultipartFile c){
        log.debug("test = {},file = {}",test.toString(),c);
        return null;
    }
}
